package com.kfm.exec;

import java.util.Random;
import java.util.Scanner;

public class Test01 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println(getCode(i));
    }

    public static String getCode(int n) {
        // 随机生成一个 n 位的密码
        // 不包含重复字符
        // 要有字母和数字
        // 不能以数字开头
        String str = "";
        Random random = new Random();
        for (int i = 0; i < n; i++) {
            int type = random.nextInt(3);
            if (i == 0) { // 不能以数字开头
                type = random.nextInt(2);
            }

            char c = switch (type) { // 要有字母和数字
                case 0 -> (char) (random.nextInt(26) + 65);
                case 1 -> (char) (random.nextInt(26) + 97);
                default -> (char) (random.nextInt(10) + 48);
            };
            while (str.indexOf(c) != -1) {
                c = switch (type) { // 要有字母和数字
                    case 0 -> (char) (random.nextInt(26) + 65);
                    case 1 -> (char) (random.nextInt(26) + 97);
                    default -> (char) (random.nextInt(10) + 48);
                };
            }
            str += c;
//            // "kfm".indexOf('j') = -1 在"kfm"字符串中'c'的下标，如果存在返回下标，不存在返回-1
//            // 判断当前随机出来的字符 c 是否已经存在  --> 判断 变量 c 是否在字符串 str 中存在
//            // --> indexOf('') 返回参数在字符串中的下标，如果存在返回下标（0 - str.length() - 1） 不存在返回 -1
//            if (str.indexOf(c) == -1) { // 不包含重复字符
//                str += c;
//            } else {
//                i--;
//            }
        }
        return str;
    }
}
